var AutoPlay = document.getElementById("AutoPlay"); // 自动播放按钮元素
var RandomPlay = document.getElementById("RandomPlay"); // 随机播放按钮元素
var CirclePlay = document.getElementById("CirclePlay"); // 单曲循环按钮元素
var sontitem = document.querySelectorAll('#song-list .song-item'); // 获取所有播放列表元素（用于给修改背景样式）
var frame = document.getElementById("frame"); // 隐藏框元素
var framePlay = document.getElementById("Icon_fa-play"); // 隐藏框播放/暂停按钮元素
var songlist = document.getElementById("song-list"); // 跟随隐藏框调整
var audioElements = document.querySelectorAll('#song-list audio');  // 获取所有audio元素
var playingIndex = -1; // 初始化 playingIndex 变量
var stopIndex = -1; // 初始化 stopIndex 变量
var randomIndex = 0; // 初始化随机播放的元素下标
var randomAudio = 0; // 初始化随机播放的元素
var randomBackgroundColor = 0; // 初始化随机播放的背景元素
var AutoPlayClick = false; // 随机播放选中判断
var RandomPlayClick = false; // 随机播放选中判断
var CirclePlayClick = false; // 单曲循环选中判断
var triggerOption = false; // 避免触发多个事件判断

function AutoPlayIsSelected() {   // 自动播放按钮功能
    if (AutoPlay.classList.contains('selected')) {  // 当点击按钮时元素包含class="selected"这个类
        AutoPlay.classList.remove("selected");    // 去除背景样式
        AutoPlayClick = false;    // 未选中随机播放
    } else { // 当点击按钮时元素不包含class="selected"这个类
        AutoPlay.classList.add("selected");   // 添加背景样式
        AutoPlayClick = true; // 选中随机播放
        RandomPlayClick = false; // 随机播放功能禁用
        RandomPlay.classList.remove("selected");    // 去除背景样式
        CirclePlayClick = false; // 单曲循环功能禁用
        CirclePlay.classList.remove("selected");    // 去除背景样式
    }
}

function RandomPlayIsSelected() {   // 随机播放按钮功能
    if (RandomPlay.classList.contains('selected')) { // 当点击按钮时元素包含class="selected"这个类
        RandomPlay.classList.remove("selected");    // 去除背景样式
        RandomPlayClick = false;    // 未选中随机播放
    } else { // 当点击按钮时元素不包含class="selected"这个类
        RandomPlay.classList.add("selected");   // 添加背景样式
        RandomPlayClick = true; // 选中随机播放
        AutoPlayClick = false;
        AutoPlay.classList.remove("selected");    // 去除背景样式
        CirclePlayClick = false;
        CirclePlay.classList.remove("selected");    // 去除背景样式
    }
}

function CirclePlayIsSelected() {   // 单曲循环按钮功能
    if (CirclePlay.classList.contains('selected')) { // 当点击按钮时元素包含class="selected"这个类
        CirclePlay.classList.remove("selected");    // 去除背景样式
        CirclePlayClick = false;    // 未选中随机播放
    } else { // 当点击按钮时元素不包含class="selected"这个类
        CirclePlay.classList.add("selected");   // 添加背景样式
        CirclePlayClick = true; // 选中随机播放
        AutoPlayClick = false;
        AutoPlay.classList.remove("selected");    // 去除背景样式
        RandomPlayClick = false;
        RandomPlay.classList.remove("selected");    // 去除背景样式
    }
}


// 播放、暂停、背景颜色 功能的封装
function playFirst() {
    audioElements[0].play();    // 播放第一首
    sontitem[0].classList.add('selected'); // 添加背景颜色
}

function playNext() {
    audioElements[playingIndex + 1].play(); // 播放下一首
    sontitem[playingIndex + 1].classList.add("selected"); // 添加背景颜色
}

function pauseCurrent() {
    audioElements[playingIndex].pause(); // 停止播放
    sontitem[playingIndex].classList.remove('selected'); // 移除背景颜色
}


function getIndex() {
    playingIndex = -1; // 假设没有音频正在播放
    for (var i = 0; i < audioElements.length; i++) {
        if (sontitem[i].classList.contains("selected")) { 
            stopIndex = i; // 将暂停的音频下标赋值给 playing
        }
        if (!audioElements[i].paused) { // 如果audio处于播放状态
            playingIndex = i; // 将当前正在播放的音频下标赋值给 playing
            disc.classList.add("fa-spin"); // 添加旋转类
            break; // 找到正在播放的音频，退出循环
        }
    }
    if (playingIndex === -1) {
        // 没有找到正在播放的音频，可以在这里移除旋转类
        disc.classList.remove("fa-spin");
    }
}



// 获取正在播放歌曲的相关信息
const songTitles = document.getElementsByClassName("song-title");
const Singers = document.getElementsByClassName("song-artist");
var source = songlist.getElementsByTagName("source");
// 获取隐藏框相关元素
var frame_songName = document.getElementById("songName"); // 获取歌曲名字元素
var frame_singer = document.getElementById("singer"); // 获取歌手元素
var frame_songPlayer = document.getElementById("songPlayer"); // 获取songPlayer
var frame_src = frame_songPlayer.querySelector("audio source src");
// 实现一次只能播放一首
for (var i = 0; i < audioElements.length; i++) { // 循环遍历元素
    // 添加点击事件监听器
    audioElements[i].addEventListener('play', function() {  // 监听新播放的歌曲元素
        // 在播放时检查其他audio元素并暂停
        for (var j = 0; j < audioElements.length; j++) { // 循环遍历原歌曲播放的元素
            if (audioElements[j] !== this) { // 如果原元素与新元素不一致
                audioElements[j].pause(); // 原歌曲停止播放
                sontitem[j].classList.remove('selected'); // 移除背景颜色
            }
            else {
                sontitem[j].classList.add('selected'); // 添加背景颜色
                frame.style.display = 'block'; // 弹出隐藏框
                songlist.style.marginTop = "24%"; // 重新定位歌曲页（下移），防止隐藏框遮挡内容
                frame_songName.textContent = songTitles[j].textContent; // 重置隐藏框歌曲名称
                frame_singer.textContent = Singers[j].textContent; // 重置隐藏框歌手名称
                frame_src = source[j].src // 重置url
            }
        }
    });
}



function faPlayFunc() { // 添加播放/暂停转换功能
    getIndex(); // 获取当前播放的歌曲的下标

    if (framePlay.classList.contains("fa-play")) { // 如果点击时为暂停状态
        if (playingIndex === -1 && stopIndex === -1) {
            console.log("没有正在播放的歌曲");
        } else if (stopIndex != -1){
            audioElements[stopIndex].play(); // 点击后播放
            framePlay.classList.remove("fa-play"); // 移除播放按钮
            framePlay.classList.add("fa-pause"); // 添加显示暂停按钮
        }
    } else if (framePlay.classList.contains("fa-pause")){ // 如果点击时为播放状态
        audioElements[stopIndex].pause(); // 点击后播放
        framePlay.classList.remove("fa-pause"); // 移除暂停按钮
        framePlay.classList.add("fa-play"); // 添加显示播放按钮
    }
}


// 播放功能实现（“下一首”按钮）
function checkAudioPlaying() {  // 检查是否有音频正在播放
    var length = audioElements.length;  // 获取歌曲的数量
    randomIndex = Math.floor(Math.random() * length);   // 在数值内生成一个随机数
    randomAudio = audioElements[randomIndex];   // 生成随机播放的歌曲的元素
    var randomBackgroundColor = sontitem[randomIndex];  // 同时获取该元素的列表（用于修改背景样式）

    getIndex(); // 获取当前播放的歌曲的下标
    
    if (!RandomPlayClick && !AutoPlayClick && !CirclePlayClick) {   // 如果没有选中任何按钮
        if (playingIndex === -1) { // 如果没有正在播放的歌曲，播放第一首
            playFirst();
        } else if (playingIndex === (audioElements.length - 1)) { // 如果正在播放最后一首
            // 停止当前的并播放第一首
            pauseCurrent();
            playFirst();
        } else { // 有正在播放的歌曲且不是最后一首
        // 停止当前的并播放下一首
            pauseCurrent();
            playNext();
        }
    } else if (AutoPlayClick) {  // 当选中自动播放按钮
        if (playingIndex === -1) { // 如果没有正在播放的歌曲
            playFirst();
        } else if (playingIndex === (audioElements.length - 1)) { // 如果正在播放最后一首
            pauseCurrent();
            playFirst();
        } else {
            pauseCurrent();
            playNext();
        }
    } else if (RandomPlayClick) {  // 当选中随机播放按钮
        if (playingIndex === -1) {   // 如果没有正在播放的歌曲
            randomBackgroundColor.classList.add('selected'); // 添加背景颜色
            randomAudio.play();
        } else {
            pauseCurrent();
            audioElements[playingIndex].currentTime = 0; // 将当前播放时间设置为 0，即从头开始播放
            randomBackgroundColor.classList.add('selected'); // 添加背景颜色
            randomAudio.play();
        }
    } else if (CirclePlayClick) {  // 当选中单曲循环按钮
        if (playingIndex === -1) { // 如果没有正在播放的歌曲
            playFirst();
        } else if (playingIndex === (audioElements.length - 1)) { // 如果正在播放最后一首
            pauseCurrent();
            playFirst();
        } else {
            pauseCurrent();
            playNext();
        }
    }
}

var currentSongIndex = 0; // 当前歌曲索引
audioElements.forEach(function (audio) { // 循环遍历元素
    audio.addEventListener('ended', function () { // 监听是否播放结束
        triggerOption = true;
        if (!RandomPlayClick && !AutoPlayClick && !CirclePlayClick) {   // 如果没有选中任何按钮
            this.currentTime = 0; // 将当前播放时间设置为0
            this.pause(); // 停止播放
            console.log("没有选中任何按钮，播放完成，停止播放");
        } else if (AutoPlayClick){
            currentSongIndex++; // 切换到下一首歌曲
            if (currentSongIndex >= audioElements.length) {
                currentSongIndex = 0; // 如果已经是最后一首歌曲，则切换到第一首歌曲
                console.log("选中自动播放按钮，播放完成，已经是最后一首歌曲，切换到第一首歌曲");
            }
            var nextAudio = audioElements[currentSongIndex];
            nextAudio.currentTime = 0; // 将下一首歌曲的播放时间设置为0
            nextAudio.play(); // 播放下一首歌曲
            console.log("选中自动播放按钮，播放完成，切换到下一首歌曲");
        } else if (RandomPlayClick) { // 随机播放功能
            randomIndex = Math.floor(Math.random() * audioElements.length);   // 在歌曲数量值内生成一个随机数
            randomAudio = audioElements[randomIndex];   // 生成随机播放的歌曲的元素

            randomAudio.currentTime = 0; // 将下一首随机歌曲的播放时间设置为0
            randomAudio.play(); // 随机播放下一首歌曲
            console.log("选中随机播放按钮，播放完成，随机切换到下一首歌曲");
        } else if (CirclePlayClick) {  // 当选中单曲循环按钮
            this.currentTime = 0; // 将当前播放时间设置为0
            this.play(); // 重新开始播放
            console.log("选中单曲循环按钮，播放完成，重新播放");
        } 
    });
});

var disc = document.getElementById("disc-image"); // 唱片图标元素
for (var i=0;i<audioElements.length;i++) {
    audioElements[i].addEventListener('play', function() {
            getIndex();
        if (!triggerOption) { // 如果没有触发结束事件则执行
            framePlay.classList.remove("fa-play"); // 移除播放按钮
            framePlay.classList.add("fa-pause"); // 添加显示暂停按钮
            disc.classList.add("fa-spin"); // 添加旋转类
        }
    });

    // 当音频暂停时触发
    audioElements[i].addEventListener('pause', function() {
        getIndex();
        console.log(playingIndex);
        if (!triggerOption && playingIndex === -1) { // 如果没有触发结束事件则执行
            framePlay.classList.remove("fa-pause"); // 移除播放按钮
            framePlay.classList.add("fa-play"); // 添加显示暂停按钮
            disc.classList.remove("fa-spin"); // 移除旋转类
        }
    });

}
    